
#include "iostream"
#include "vector"
#include "unordered_map"
#include "unordered_set"
#include "algorithm"
#include "string"
#include "list"
#include "string.h"

struct FenShu{
    int fenzi;
    int fenmu;
    double v;
    FenShu(int fenzi,int fenmu):fenmu(fenmu),fenzi(fenzi){
        v=fenzi*1.0/fenmu;
    }
};
class OneLoop{
public:
    std::vector<FenShu> vec;
    void sort(){
        for(int i=0;i<vec.size();i++){
            for(int j=0;j<vec.size()-i-1;j++){
                if(vec[j].v>vec[j+1].v){
                    std::swap(vec[j],vec[j+1]);
                }
            }
        }
    }
    bool ok(int fenzi,int fenmu){
        if(fenzi%fenmu==0){
            return false;
        }
        for(int i=2;i<=fenzi;i++){
            if(fenzi%i==0&&fenmu%i==0){
                return false;
            }
        }
        return true;
    }
    OneLoop(int n){
        for(int i=0;i<n;i++){
            if(i==0){
                vec.push_back(FenShu(0,1));
//                printf("0/1\n");
            }else{
                for(int j=n;j>i;j--){
                    if(i==1){
                        vec.push_back(FenShu(1,j));
//                        printf("1/%d\n",j);
                    }else{
                        if(ok(j,i)){
                            vec.push_back(FenShu(i,j));
//                            printf("%d/%d\n",i,j);
                        }
                    }
                }
            }
        }
        sort();
        for(auto &s:vec){
            printf("%d/%d\n",s.fenzi,s.fenmu);
        }
    }
};
class Solution {
public:
    void run() {

        bool first = true;
        int a;
        while (std::cin>>a) {
            OneLoop loop(a);
        }
    }
};

int main() {
//    bool cur_num= true;
    Solution().run();
    return 0;
}

